#include "GY_DelegateTableView.h"

GY_DelegateTableView::GY_DelegateTableView(QWidget *parent)
    : GY_IdTableView(parent)
{
    m_pDelegate = new GY_TableViewItemDelegate(this);
    this->setItemDelegate(m_pDelegate);

    //点击空白发出信号，关闭编辑器返回数据
    connect(this,&GY_DelegateTableView::sendClickedBlackSig,m_pDelegate,&GY_TableViewItemDelegate::clickedBlack);
    //返回数据信号
    connect(m_pDelegate,&GY_TableViewItemDelegate::dataChanged,this,&GY_DelegateTableView::dataChangedSig);
}

GY_DelegateTableView::~GY_DelegateTableView()
{

}

bool GY_DelegateTableView::addRowData(const QVariant &rowId, const QVector<QVariant> &rowData)
{
    if(m_RowDataInfoMap.contains(rowId)||!rowData.size()||!((QStandardItemModel*)this->model())->columnCount())
    {
        return false;
    }
    QList<QStandardItem*> rowItems; //用list容器存储item
    for(int i=0;i<((QStandardItemModel*)this->model())->columnCount();i++)
    {
        QStandardItem* pItem=new QStandardItem;
        if(i<rowData.size()) //如果插入的行数据的数量大于列数
        {
            pItem->setData(rowData[i]);
            pItem->setText(rowData[i].toString());
        }
        pItem->setData(rowId,RowIdData);
        rowItems<<pItem;
    }
    m_RowDataInfoMap.insert(rowId,rowItems);
    ((QStandardItemModel*)this->model())->appendRow(rowItems); //添加行
    return true;
}

void GY_DelegateTableView::mousePressEvent(QMouseEvent *event)
{
    QModelIndex index = indexAt(event->pos());
    if(!index.isValid())
    {
        emit sendClickedBlackSig((QStandardItemModel*)this->model());
    }
    QTableView::mousePressEvent(event);
}



